<?php

namespace App\Admin\Models;

use App\Admin\Models\BaseModel;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\MessageBag;
use Ixudra\Curl\Facades\Curl;
use Encore\Admin\Facades\Admin;
use App\Services\Store;
use App\Services\Common;
use DB;

class walletTrade extends BaseModel
{   
    //指定主键
    protected $primaryKey = 'wtId';
    
    public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null)
    {
        $perPage = Request::get('per_page', 20);

        $page = Request::get('page', 1);


		///////获取数据//////////////////////////////////////////////////////////////////////////////////////
		$sId = Admin::user()->sId;
		$sInfo = DB::table('store')->where("sId", $sId)->first();
//		$sCode = Admin::user()->sCode;
//
//		$url = $this->host."/wallet/getUserTrade?page={$page}&perPage={$perPage}&wcusKey={$sId}&uId={$sInfo->sCode}";
//
//		$response = Curl::to($url)->get();
//		$data = $this->handelApiData($response);

		$Common = new Common();
		$data = $Common->getWalletList($sId, $sInfo->sCode, $page, $perPage);
//		print_r(json_encode($data));exit;
		////////获取数据/////////////////////////////////////////////////////////////////////////////////////

		$total = $data['count'];
		
        extract($data['data']);

        $tags = static::hydrate($data['data']);

        $paginator = new LengthAwarePaginator($tags, $total, $perPage);

        $paginator->setPath(url()->current());

        return $paginator;
    }

    public static function with($relations)
    {
        return new static;
    }
    
    /**
     * Add a basic where clause to the query.
     *
     * @param  string|array|\Closure  $column
     * @param  mixed   $operator
     * @param  mixed   $value
     * @param  string  $boolean
     * @return $this
     */
    public function where($column, $operator = null, $value = null, $boolean = 'and'){
    	// http://localhost:96/admin/remark/remarkTag?rtcId=1
    	// $column rtcId
    	// $operator 1
    	// $value null
    	// $boolean and
    	return $this;
    }
    
    // 获取单项数据展示在form中
	public function findOrFail($id)
	{
		$sId = Admin::user()->sId;
		$url = $this->host."/storeGoods/get/{$id}?mcKey=".$sId;
		$response = Curl::to($url)->get();
		$data = $this->handelApiData($response);
	
	    return static::newFromBuilder($data);
	}
	
	// 保存提交的form数据
	public function save(array $options = Array())
	{
	    $attributes = $this->getAttributes();
	    $userName = Admin::user()->name;
	    $now = date('Y-m-d H:i:s', time());
	    // 根据是否有id判断添加还是更新
	    if (isset($attributes['wtId'])){
	    	$error = new MessageBag([
		        'title'   => '系统错误',
		        'message' => '不可以编辑',
		    ]);
		
		    return back()->with(compact('error'));
	    }else{
	    	$ignore = ['createUser', 'createTime', 'updateUser', 'updateTime'];
		    $newAttributes = array();
		    foreach($attributes as $key => $value){
		    	if (!in_array($key, $ignore)){
		    		$newAttributes[$key] = $value;
		    	}
		    }

		    $newAttributes['createUser'] = $userName;
			$url = $this->host."/wallet/addTrade";
	    }
	    
	    
	    $sId = Admin::user()->sId;
	    $newAttributes['wcusKey'] = $sId;
	    $sInfo = DB::table('store')->where('sId', $sId)->first();
	    $newAttributes['uId'] = $sInfo->sCode;
	    $newAttributes['createUser'] = Admin::user()->name;
	    $newAttributes['wtCost'] = 0;
	    $newAttributes['wtProfit'] = $newAttributes['wtChangedMoney'];
	    
		$response = Curl::to($url)
					->withData($newAttributes)
					->post();

		$data = json_decode($response, true);

		if (!isset($data['code'])){
			$error = new MessageBag([
		        'title'   => '系统错误',
		        'message' => '',
		    ]);
		
		    return back()->with(compact('error'));
		}

		if ($data['code'] == 0){
		    $error = new MessageBag([
		        'title'   => '保存失败',
		        'message' => $data['msg'],
		    ]);
		    return back()->with(compact('error'));
		}
		
		$Store = new Store();
		$Store->addStatsDay($sId, $sInfo->sCode, 'flowAccount', $newAttributes['wtChangedMoney'], '');
		$Store->addStatsDay($sId, $sInfo->sCode, 'profit', $newAttributes['wtProfit'], '');
		
		return $this;
	}
	
	
}
